5 kyu
將傳入函數的字串,以駝峰式的方式轉換為 hashtag 形式,並限制長度。
傳入的字串可能有數量不等的空格,但是不能在一開始就把空格取代。
必須利用空格來產生陣列,來能確保駝峰顯示的大寫首字元。
因此先轉為陣列形式、判斷陣列長度,先決定是否要繼續運算。
如果沒超出限制再作後續處理。
str = str.split(" ")
str.filter(item => item !== " ")
if(str.length < 140) return false
str.map(item => item[0].toUpper)
return str.join("")
function generateHashtag (str) {
str = str.split(" ").filter(String);
if(str.length >= 140 || str.length == 0) return false;
for(let i=0;i<str.length;i++){
if(str[i].length >= 140) return false;
str[i] = str[i].replace(/^[a-z]/,match=> match.toUpperCase())
}
return "#" + str.join("");
}
將傳入的字串轉為陣列; filter(String)
過濾空字串,因為空字串會被視為false
。
設定 if 條件:如果陣列長度 ≥ 140,或者空陣列就直接返回 false。
用 for 迴圈跑每一個陣列元素;如果陣列元素 ≥ 140 就返回 false。
用正則表達式獲取第一個首字幕,判斷如果是小寫的話就改成大寫後返回。
最後 return 與 #
拼接的字串。
function generateHashtag (str) {
var hashtag = str.split(' ').reduce(function(tag, word) {
return tag + word.charAt(0).toUpperCase() + word.substring(1);
}, '#');
return hashtag.length == 1 || hashtag.length > 140 ? false : hashtag;
}
將字串轉為陣列後,使用陣列方法 reduce
取得轉換後的字串。
將#
作為第一個起始值,會作為 tag 的值傳入函數;word 帶入每一次被調用到的陣列元素;並且取得第一個字元轉換為大寫;然後 substring
拼接剩餘字串。
最後三元運算子驗證 reduce
產生的字串長度,如果為 1 或者結果大於 140,就返回 false;否則返回字串本身。
不知不覺來到第五天了,一個小小的里程碑!🥹